const db = require('../db')
const bcrypt=require('bcryptjs')
// 获取用户基本信息
// 1. 获取用户ID值
exports.getUserinfo = (req, res) => {
   
    const { id }=req.user
    // 定义查询语句
    const sql = `select * from ev_users where id=?`
    // 执行查询语句
    db.query(sql, [ id ], (err, results) => {
      // 执行失败
      if (err) return res.cc(err)
      // 非查询条件需要判断影响的行数
  if (results.length ==0) return res.cc('获取用户数据失败!')
      // 执行成功 TODO: 
     res.send({
       status: 0,
         message: '获取用户基本信息成功',
       //...是es6中的拓展运算符,可以吧对象或数组中的元素拆分或逗号分隔的形式
       data:{ ...results[0], password: undefined}
     })
    })
}
// 更新用户基本信息
exports.updateUserinfo = (req, res) => {
    // 定义更新语句
    const sql = `update ev_users set nickname=?,email=? where id=?`
    const { nickname, email, id } = req.body
    db.query(sql, [nickname,email,id  ], (err, results) => {
      // 执行失败
      if (err) return res.cc(err)
      // 非查询条件需要判断影响的行数
      if (results.affectedRows !== 1) return res.cc('操作失败!')
      // 执行成功 TODO: 
      res.send({
        status: 0,
        message: '修改用户信息成功'
      })
    })
}
// 重置密码
exports.updatepwd = (req, res) => {
// 获取当前用户ID
    const {id}=req.user
    // 定义查询语句
    const sql=`select password from ev_users where id=?`
    db.query(sql, [ id ], (err, results) => {
      // 执行失败
      if (err) return res.cc(err)
      // 非查询条件需要判断影响的行数
      if (results.length !== 1) return res.cc('原密码不正确!')
      // 执行成功 TODO: 
        // console.log(results);
    //   
        db.query(sql, [  id], (err, results) => {
          // 执行失败
          if (err) return res.cc(err)
          // 非查询条件需要判断影响的行数
          if (results.length !== 1) return res.cc('原密码不正确')
          // 执行成功 TODO: 
          const {password:hash}=results[0]
          const {oldPwd,newPwd}=req.body
          const isSame=bcrypt.compareSync(oldPwd,hash)
          if(!isSame)return res.cc('原密码不正确')
        //   定义更新语句去修改密码
            const sql = `update ev_users set password=? where id=?`
            // 执行更新语句,注意:新密码需要加密后才能入库
            db.query(sql, [ bcrypt.hashSync(newPwd,10),id ], (err, results) => {
              // 执行失败
              if (err) return res.cc(err)
              // 非查询条件需要判断影响的行数
              if (results.affectedRows !== 1) return res.cc('操作失败!')
              // 执行成功 TODO: 
              res.send({
                status: 0,
                message: '修改密码成功'
              })
            })
        })
    })
}
// 更换头像
exports.updateAvatar = (req, res) => {
    const sql = `update ev_users set user_pic=? where id=?`
    db.query(sql, [req.body.avatar,req.user.id  ], (err, results) => {
      // 执行失败
      if (err) return res.cc(err)
      // 非查询条件需要判断影响的行数
      if (results.affectedRows !== 1) return res.cc('操作失败!')
      // 执行成功 TODO: 
      res.send({
        status: 0,
        message: '更新用户头像成功'
      })
    })
}